package models

import (
	"ginorm/common"

	"gorm.io/gorm"
)

// 定义模型，ORM库操作数据库，需要定义一个struct类型和MYSQL表进行绑定或者叫映射，struct字段和MYSQL表字段一一对应
type UserInfo struct {
	//通过在字段后面的标签说明，定义golang字段和表字段的关系
	//例如 `gorm:"column:username"` 标签说明含义是: Mysql表的列名（字段名)为username
	Username string `gorm:"column:username" json:"username" valid:"required"`
	Password string `gorm:"column:password" json:"password" valid:"required"`
	gorm.Model
}

// 数据库中的表名
func (table *UserInfo) TableName() string {
	return "user_info"
}

// 1.创建用户
func CreateUser(user *UserInfo) *gorm.DB {
	return common.DB.Create(&user)
}

// 2.删除用户
func DeleteUser(user *UserInfo) *gorm.DB {
	return common.DB.Delete(&user)
}

// 3.修改密码
func UpdateUser(user *UserInfo) *gorm.DB {
	return common.DB.Model(&user).Updates(UserInfo{Password: user.Password})
}

// 4.查询是否注册
func FindUsername(username string) UserInfo {
	user := UserInfo{}
	common.DB.Where("username = ?", username).First(&user)
	return user
}

// 5.查询所有用户
func SelectUser() []UserInfo {
	var users []UserInfo
	common.DB.Find(&users)
	return users
}
